# !/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
===========================
@Time : 2022/9/8 0008 21:54
@Author : 测试开发工程师
@File : 测试平台训练营1-设计与实现.py
@Software: PyCharm
============================
"""



"""

一. 测试平台的价值体系
问题：
    1. 为什么要做测试平台？ 为什么我们要学习平台开发的技术？ 怎么样去做测试平台才能达到价值最大化（个人，公司）
    2. 平台开发技术要学到什么程度？一定要深入吗？
    3. 平台开发需要掌握什么技术栈，如何学习可以提升投入产出比？
    
    测试（产品类型）平台（产品形态）-功能设计
    测试平台具备的功能： 项目管理，测试类型，测试用例，测试套件，测试装置，测试 Runner，测试报告
    功能点                      描述                                            案例
    项目管理                 对于项目的分类，通常以业务线为维度                  商城，飞书，企业微信
    测试类型                 手工测试，自动化测试                     pytest,JUnit,HttpRunner,Postman
    测试用例                 用例的集合                                  标题，步骤，预期结果，实际结果
    测试套件                 用例的集合                          通常是用例从不同维度组合，冒烟测试用例集，某业务线用用例集
    测试装置                 用例执行前后的准备工作，处理工作        用例依赖环境的安装，比如 python,requirements
    测试 Runner              测试用例执行调度器                      执行环境的管理：性能测试环境，兼容性环境
    测试报告                 测试结果的体现                                  allure 报告，手工报告
    
学院平台： 
    项目管理模块： 项目搜索，项目新建，项目编辑，项目配置，团队管理，角色管理
    支持自动化测试框架管理： web 自动化测试，App 自动化测试，接口自动化测试，兼容性测试
    支持多样化测试能力管理： 性能测试，安全测试，大数据测试
    测试报告管理： 支持测试结果管理，支持多种测试能力的自定义报告管理，支持数据分析，支持用例趋势图，Bug 趋势图等图表管理
    

测试平台的个人价值：
    个人价值：
        测试方案能力
        测试工具产品设计能力
        前后端的技术能力
    公司收益（提效）：
        1. 提效
        2. 提升质量
        3. 降低成本
    市场收益：
        1. 知名度与影响力
        2. 成熟的商业模式，也有巨大的市场空间。带来直接的创收
        3. 代表产品： webtest，禅道,，process on,，figma
    
测试平台的 "Timing"
    需求： 公司需要测试能力服务化，平台化，比如整合内部的多套平台
    体系： 公司有成熟的测试体系：自动化测试，持续集成
    人力： 有成熟的技术团队，包括前端，后端，测试开发三个角色
    
    
    
二. 测试平台的学习路线
    需求（p1）： 测试流程，中台化与服务化
    技术： 后端（p2）- 设计模式和算法，前端（p3），测试用例调度（p2），数据集成（p2）
    
技术-前端
    界面展示
    良好的用户体验
    数据展示
    相关技术： VUE, React等
    
技术-后端
    把控业务逻辑
    数据库交互
    相关技术： Flask， Django， SpringBoot
    
数据库
    数据的持久化存储
    数据操作
    相关技术： Mysql，Oracle
    
测试用例管理：  
    参考知识    xUnit : https://en.wikipedia.org/wili/XUnit
    测试标题，测试套件，测试步骤，测试装置，测试断言，测试结果，测试执行器
    
测试用例调度
    定时任务，分布式，触发机制，拓展性配置，相关技术： Jenkins
    
三. 测试平台实战练习
    第一周：后端知识回顾，构建项目架构，实现后端逻辑
    第二周：完成前端，前后端联调，测试任务的执行
    
    现有后端代码的问题：
        如果一家饭店，从服务员 -> 厨师 -> 收银 都是一个人，会成什么样子？    人多情况下，忙不过来。
        耦合性强
        可维护性差
        可测性差
        
    代码分层的目的：
        各司其职（高内聚），轻松协作（低耦合），就是分层思想的目标。
        方便后续代码进行维护扩展
        分层的效果需要整个团队都接受
        各个层职边界清晰
        
    测试平台后端架构：
        路由层（Controller） ： 处理接口数据，接口文档
        服务层（Service）    ： 处理核心的业务逻辑
        数据层（Dao）        ： 处理数据相关
        DO层（实体类）       ： 存放实体类（数据表映射，没有任何实际意义）
        
        entity （实体类） 的作用一般是和数据表做映射的
        此对象与数据库表结构一一对应
        
        ORM 创建用例表：  id   case_title   remark  
        class TestCase(db.Model):
            __tablename = "testcase"
            id = db.Column(Integer,primary_key=True)
            uid = db.Column(String(80),nullable=False,unique=True)
            remark = db.Column(String(120))
            
    后端架构优化：
        1. Service层
        2. 单元测试用例（根据 Service 层编写）
        3. DO层（实体类）
        4. 完善Dao层（数据操作）
        5. 完善接口层
        
    
        
    
"""